//
//  HomeViewController.swift
//  weibo
//
//  Created by apple on 16/2/20.
//  Copyright © 2016年 apple. All rights reserved.
//

import UIKit
import AFNetworking
import SVProgressHUD

class HomeViewController: BaseTableViewController {

    //模型数组
    private lazy var statuses = [Status]()
    //cellID
    private let homeCellId = "homeCellId"
    
    override func viewDidLoad() {
        super.viewDidLoad()
        print(view)
        if !userlogin {
            //用户没有登录 当前的根视图是访客视图 就不要设置tableView
            //设置访客视图的信息
//            visitorLoginView?.setupInfoWith("关注一些人，回这里看看有什么惊喜", imageName: nil)
            return
        }
        
        
        prepareForTableView()
        //加载数据
        loadData()
        
    }
    
    private func prepareForTableView() {
        //注册cell
        //fatal error: unexpectedly found nil while unwrapping an Optional value
        //用户没有登录的情况下 根视图是 访客视图
//        tableView.registerClass(StatusCell.self, forCellReuseIdentifier: homeCellId)
        //设置cell的高度
        //要使用tableView能够自动计算行高需要设置两个属性
        //1.设置预估行高  尽量要接近真实的行高
        tableView.estimatedRowHeight = 300
        //2.设置行高为自动计算 (自动布局系统来计算行高) +  3.tableView的cell的contentView添加约束
        tableView.rowHeight = UITableViewAutomaticDimension
        
        //设置分割线样式
        tableView.separatorStyle = .None
        
        //系统下拉刷新控件
        refreshControl = UIRefreshControl()
        //添加触发事件
        refreshControl?.addTarget(self, action: "loadData", forControlEvents: .ValueChanged)
    }
    
    //MARK: 加载首页数据
    @objc private func loadData() {
        let urlString = "https://api.weibo.com/2/statuses/home_timeline.json"
        guard let token = AccountViewModel.sharedAccountViewModel.access_token else {
            SVProgressHUD.showErrorWithStatus("请登录")
            return
        }
        let parameters = ["access_token": token]
        let AFN = AFHTTPSessionManager()
        //发起GET请求
        //转动小菊花
        refreshControl?.beginRefreshing()
        AFN.GET(urlString, parameters: parameters, progress: nil, success: { (_, result) -> Void in
            //停止动画
            self.refreshControl?.endRefreshing()
            //            print(result)
            //1.将result 转换成 字典类型
            guard let dict = result as? [String : AnyObject] else {
                SVProgressHUD.showErrorWithStatus("数据类型不匹配")
                return
            }
            //2.在字典中通过  "statuses"这个key 来去获取微博数组数据
            guard let array = dict["statuses"] as? [[String : AnyObject]] else {
                SVProgressHUD.showErrorWithStatus("数据类型不匹配")
                return
            }
            //实例化模型数据
            var tempArray = [Status]()
            //3.遍历数组 获取单个的字典对象
            for item in array {
                //4.字典转模型
                let s = Status(dict: item)
                //5.将模型数据添加到数组中
                tempArray.append(s)
            }
            //记录临时数组
            self.statuses = tempArray
            //6.刷新tableView
            self.tableView.reloadData()
            }) { (_, error) -> Void in
                SVProgressHUD.showErrorWithStatus("网络君正在睡觉,请稍后再试")
                print(error)
        }
    }
}

//MARK: tableView的数据源方法
extension HomeViewController {
    
    
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return statuses.count
    }
    
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        //使用这个方法 获取cell 手写代码的时候需要手动注册cell
        let cell = tableView.dequeueReusableCellWithIdentifier(homeCellId, forIndexPath: indexPath) as! StatusCell
//         textLabel 是一个懒加载的视图
                cell.textLabel?.text = statuses[indexPath.row].user?.name
        cell.status = statuses[indexPath.row]
        
        return cell
    }

}
